package com.tedu.api.io;

import org.junit.Test;


import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

public class HomeWorkLambda11 {
    public static void main(String[] args) {
        //1.文件找不到
        try {
        FileOutputStream f=new FileOutputStream("fos.txt");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        //2.IO异常
        try {
            File f= new File(".");
            System.out.println(f.getCanonicalPath());
        }catch (IOException e) {
            e.printStackTrace();
        }
        //3.数组越界异常
        int[]arr =new int[3];
        try{
            System.out.println(arr[3]);
        }catch
        (ArrayIndexOutOfBoundsException e){
            System.out.println("越界异常"+e.getMessage());
        }
        //4.类型转化异常
        try{
            Object obj=new Object();
            String str2=(String) obj;
            System.out.println("转换后字符"+str2);
        }catch(ClassCastException e){
            System.out.println("类型转换"+e.getMessage());
        //5.数值转换异常
        }try {
            String s="4";
            Integer.parseInt(s);
        }catch (NumberFormatException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void homework2(){
        //1.创建低级流---针对 读操作  【找到ISOAPI.java】
        FileInputStream fis=null;
        InputStreamReader isr=null;
        BufferedReader br=null;
        //maven项目----src\main\java\com\tedu\api\io\IOSAPI.java
        try {
            fis=new FileInputStream("src"+File.separator+"main"
                    +File.separator+"java" +File.separator+"com"
                    +File.separator+"tedu"+File.separator+"api"
                    + File.separator+"io" +File.separator+"IOSAPI.java");
            //2.创建转换流----指定编码及：UTF8 【不能直接输出字符串】
            isr=new InputStreamReader(fis,"UTF8");
            //3.【能直接输出字符串】创建缓冲？？流
            br=new BufferedReader(isr);
            //创建保存每行字符串的变量、
            String line=null;
            //5.一直  读取字符串，不等于null  有字符串--同时写出
            while((line= br.readLine())!=null) {
                System.out.println(line);
            }
            String str=br.readLine();
            System.out.println(str);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        } finally {
            //6.关闭流
            if(br!=null)
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
        }
    }

/**Lambda作业
 * 单元测试：testLambdaHomeWork1【以此类推】 --周二12点前
 * 1.线程两种创建方式：使用Lambda表达式完成
 * 2.找集合中：listAPI：单元测试名：testSort 使用Lambda表达式完成
 * 3.找IO流--File类---”FilterAPI“：转换成匿名内部类转成Lambda
 * 使用Lambda表达式完成【5行搞定】
 * 4.找IO流--File类---"FilterAPI"：转换成匿名内部类转成Lambda
 * 使用Lambda表达式完成【2行搞定】
 */
//1.线程两种创建方式：使用Lambda表达式完成
    @Test
    public void CJ(){
    Thread t = new Thread(()->{for(int i = 0;i<15;i++){
                System.out.println("有免费的小心心送一下");
            }
        });
        t.start();
        System.out.println(t);
   Runnable b =()->{for(int i=0;i<15;i++){
                System.out.println("感谢老铁送来的老铁");
            }
        };
        Thread t1=new Thread(b);
        t1.start();
    }
    //2.找集合中：listAPI：单元测试名：testSort 使用Lambda表达式完成
    @Test
    public void listAPI(){
        List<String> list = new ArrayList<>();
        list.add("你好你好");
        list.add("你好");
        list.add("你好你好你好");
        list.forEach((String)-> System.out.println("。"+String+"\n"+"o"));
    }
    //3.找IO流--File类---”FilterAPI“：转换成匿名内部类转成Lambda
    //4.找IO流--File类---"FilterAPI"：转换成匿名内部类转成Lambda
    @Test
    public void Io() throws IOException {
        //path.listFiles((File pathname)
      Path path = Paths.get(".");
      File fbl = new File(".");
      File[] fl= fbl.listFiles((File pathname)->{String str=pathname.getName();
       System.out.println(str);
       return str.startsWith("你好你好 你好");});

        FileFilter ff= file->file.isFile() && file.getName().toLowerCase().endsWith(".txt");
        Files.list(path).forEach(System.out::println);
    }
}

